package com.example.app.samples

/**
 * 这个方法是为了测试传递进来的函数执行的总时间
 *  内联函数会直接把代码搬过去，而普通函数是把函数作为一个对象传递过去
 *  如果函数被频繁调用的话，那么就会生成很多对象
 *  如果说inline函数只是为了减少调用栈，是不完全对的
 *  虽然说直接copy过去，就不会有入栈出栈。但是编译器的性能会降低，因为他要复制来复制去
 *  所以只适用于函数型参数。这样可以减少对象的创建
 */
inline  fun  measureTime(action:()->Unit){
    println(">>>> ")
    val  start=System.currentTimeMillis()
    action()
    val  end=System.currentTimeMillis()
    println("<<<< [${end-start}ms]")
}
fun  main(){
    measureTime {
        Thread.sleep(1000)
        println("Hello Kotlin")
    }
}